<?php

/**
 * Модель Макетов
 */
class SnippetModel extends DbModel {

    protected $_name = 'snippets';

    /**
     * Получение макета для секции
     *
     * @param int $id #ID секции
     * @return array Макет
     */
    public function getSnip($id) {
        $select = $this->_db->select()->from(array('s' => PREFIX . 'snippets'), array('id', 'title', 'file'))
                        ->join(array('ss' => PREFIX . 'sections'), 'ss.sid = s.id', array('name'))
                        ->where('ss.id = ?', $id)
                        ->where('ss.mid = s.mid');
        $res = $this->_db->fetchRow($select);
        return $res;
    }

    /**
     * Получение макетов/макета
     *
     * @param int $id #ID макета
     * @return mixed
     */
    public function getSnippets($id = 0) {
        $select = $this->select();
        if ($id > 0) {
            $select->where('id = ?', $id);
            $row = $this->fetchRow($select);
            $res = $row->toArray();
        } else {
            $res = $this->fetchAll($select->order('title ASC'));
        }
        return $res;
    }

    /**
     * Получение списка макетов для определенного модуля
     *
     * @param int $id #ID модуля
     * @return array #ID макета => Имя макета
     */
    public function getSnippetsForModule($id) {
        $select = $this->select()->from(PREFIX . 'snippets', array('id', 'title'));
        if ($id > 0) {
            $select->where('mid = ?', $id);
            $res = $this->_db->fetchPairs($select);
        }
        return $res;
    }

    /**
     * Обновление макета
     *
     * @param array $data Данные о макете
     * @param int $id #ID макета
     * @return int #ID
     */
    public function updateSnippet($data, $id) {
        if ($id > 0) {
            $this->update($data, "id = " . $id);
        } else {
            $this->insert($data);
            $id = $this->_db->lastInsertId();
        }
        return $id;
    }

    /**
     * Удаление макета
     *
     * @param int $id #ID макета
     */
    public function deleteSnippet($id) {
        if ($id > 0) {
            $this->delete("id = " . $id);
        }
    }

}